#pragma once
#include <QObject>

#include "RsgisPortal.h"

#include "RsGisLibFilterGaussianSmooth.h"
#include "RsGisLibFilterMedian.h"
#include "RsGisLibFilterMean.h"
#include "RsGisLibFilterSobel.h"
#include "RsGisLibFilterPrewitt.h"
#include "RsGisLibFilterGaussian1stDeriv.h"
#include "RsGisLibFilterGaussian2ndDeriv.h"
#include "RsGisLibFilterLaplacian.h"
#include "RsGisLibFilterLee.h"

class RsGisLibCMDFilter : public QObject
{
	Q_OBJECT
public:
	RsGisLibCMDFilter(RsgisPortal* Port);
	~RsGisLibCMDFilter();
	RsgisPortal* ClientPort;

public:
	RsGisLibFilterGaussianSmooth* rsgisFilterGaussianSmooth;
	RsGisLibFilterMedian* rsgisFilterMedian;
	RsGisLibFilterMean* rsgisFilterMean;
	RsGisLibFilterSobel* rsgisFilterSobel;
	RsGisLibFilterPrewitt* rsgisFilterPrewitt;
	RsGisLibFilterGaussian1stDeriv* rsgisFilterGaussian1stDeriv;
	RsGisLibFilterGaussian2ndDeriv* rsgisFilterGaussian2ndDeriv;
	RsGisLibFilterLaplacian* rsgisFilterLaplacian;
	RsGisLibFilterLee* rsgisFilterLee;

public slots:
	void FilterGaussianSmooth();
	void FilterMedian();
	void FilterMean();
	void FilterSobel();
	void FilterPrewitt();
	void FilterGaussian1stDeriv();
	void FilterGaussian2ndDeriv();
	void FilterLaplacian();
	void FilterLee();
}; 
